#include"comm.hpp"
#include"log.hpp"
using namespace std;
int main()
{
    Init init;//构造函数自动帮我们创建好管道，并且有析构函数帮我们维护释放管道资源
    Log log;
    log.Enable(Mulfile);//设置为多文件输出日志

    //打开管道：
    int fd =open(FIFO_FILE,O_RDONLY);//open以读的方式打开要阻塞等待写入放打开文件后，读方才会打开文件
    if(fd<0)
    {
        //出错以后就把信息写入日志
        log(Fatal,"error string:%s,error code: %d",strerror(errno),errno);
        exit(FIFO_OPEN_ERR);
    }
    //测试各种提示的日志：
    log(Info,"error string:%s,error code: %d",strerror(errno),errno);
    log(Warning,"error string:%s,error code: %d",strerror(errno),errno);
    log(Fatal,"error string:%s,error code: %d",strerror(errno),errno);
    log(Debug,"error string:%s,error code: %d",strerror(errno),errno);

    //开始通信：
    while(true)
    {
        char buffer[1024]={0};
        ssize_t x=read(fd,buffer,sizeof(buffer));//读写端正常时：会阻塞等待写入完成后再进行读取
        if(x>0)
        {
            buffer[x]=0;//把字符数组当做字符读取的话就要在末尾加上\0
            cout<<"client say# "<<buffer<<endl;
        }
        else if(x==0)//当写入端关闭，读取端就会非阻塞的一直读取到0，就会触发这个条件
        {
            log(Debug,"client quit,me too!,error string:%s,error code: %d",strerror(errno),errno);
            break;
        }
        else 
        {
            break;
        }

    }
    close(fd);
    return 0;
}